Copyright Borland International ObjectWindows (C) 1995 Title: BLAKJACK Example Keywords: Game;Blackjack This is a subset of a standard blackjack game. It uses a card VBX control to display the cards. [Objective] One player and one dealer can play this game. The player enters amount of money using the "Bankroll" button at the begining of the game. After entering the bankroll amount, the player can go on pressing "Hit" button until the score is near 21. If the player scores more than 21, he looses. The trick is to hit "Stand" button when the score is near 21. After you loose or win, you can bet again using the "Bet" button. Player plays the game until the bankroll is exhausted, at that time he can input more money in bankroll. [Buttons And Their Explanation] [Bankroll] Hit this button and enter the amount you want to play (Max 9999) [Bet] Hit this button when you want to bet part of the money from bankroll. No letters, negative numbers are allowed in the input dialog, it will not accept the input at all. [Play] After you hit the bet button it toggles to a 'Play' button. Pressing this button starts the game. At start, immediately after betting, the player and the dealer are issued 2 cards. If any one of these hand add up to 21 the party wins immediately. If both are 21, the game is draw. Dealer shows only one card face up all the time, along with the points. [Hit] Player receives one card from dealer when he hits this button. The issued card is immediately displayed with the new total points. At this point dealer may choose a card if his total point is less than 17, which is not displayed as usual (dealers algorithm to hit a card). [Stand] This button is hit when the player no longer wishes to play. At this point dealer may deal a card to himself if his points are less than 17. At the end dealers hand is displayed and the scores are announced. [Help] Shows help|About dialog. [Design Overview] First the Bankroll is entered by the user and stored in the "Bankroll" class. The increment and decrement of the bankroll is done by the member funtions in that class. 52 cards are "new"-ed of type "TVbxMhCardDeck" and stored in the array "TBlackjack::ppVBXCard[]" in the constructor of "TBlackjack" class. "TVbxMhCardDeck" type of cards are VBX controls. The "Card" object stores only the Suit and Number information. ("Card" object is defined in blakjack.h) When a "Card" is displayed the Suit and Number informations are taken from the "Card" object, the displayable VBX card is taken from "TBlackjack::ppVBXCard[VBXCardCount]" array. Each VBX card can have 52 possible values. The VBX card is displayed according to the above Suit and Number information. "TBlackjack::VBXCardCount", points to the next VBX card in the "TBlackjack::ppVBXCard[]" array which is available. eg: Count 12 means, cards from ppVBXCard[0] through ppVBXCard[11] have already been dealt and displayed, and ppVBXCard[12] is the next VBX card available. Suffling and dealing are done using "Card" and "Deck" objects. "TBlackjack::ppVBXCard[]" array only holds the displayable VBX cards. Each "Card" object stores an array index of the "TBlackjack::ppVBXCard[]" array in "Card::pVBXCard" data member. The VBX card at this index( in "TBlackjack::ppVBXCard[]" array) is used to display that particular "Card" object. This keeps the engine and UI part seperate. Dealer is assumed to have infinite amount of money. The cards in a particular suit are numbered from 0 - 12 eg: Ace->0, Two->1..., Jack->10, King->11, Queen->12 These numbers have nothing to do with the actual blackjack points, it is used only to keep track of the cards.